<?php

class Retailer_Backend_Adminhtml_CustomersController extends Mage_Adminhtml_Controller_action
{

    protected function _initAction() {
            $this->loadLayout()
                    ->_setActiveMenu('backend/customers')
                    ->_addBreadcrumb(Mage::helper('adminhtml')->__('Customer Manager'), Mage::helper('adminhtml')->__('Product Manager'));

            return $this;
    }

    public function indexAction() {
            $this->_initAction()
                    ->renderLayout();
    }

    public function editAction() {
            $id     = $this->getRequest()->getParam('id');
            $model  = Mage::getModel('customer/customer')->load($id);

            if ($model->getId() || $id == 0) {
                    $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
                    if (!empty($data)) {
                            $model->setData($data);
                    }

                    Mage::register('backend_data', $model);

                    $this->loadLayout();
                    $this->_setActiveMenu('backend/customers');

                    $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Product Manager'), Mage::helper('adminhtml')->__('Product Manager'));
                    $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Product News'), Mage::helper('adminhtml')->__('Product News'));

                    $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);

                    $this->_addContent($this->getLayout()->createBlock('backend/adminhtml_customers_edit'))
                            ->_addLeft($this->getLayout()->createBlock('backend/adminhtml_customers_edit_tabs'));

                    $this->renderLayout();
            } else {
                    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('backend')->__('Product does not exist'));
                    $this->_redirect('*/*/');
            }
    }

    public function newAction() {
            $this->_forward('edit');
    }

    public function saveAction() {
            if ($data = $this->getRequest()->getPost()) {
                    $id = $this->getRequest()->getParam('id');
                    $user = Mage::getSingleton('admin/session')->getUser();
                    $link = Mage::getModel('backend/backend')->load($user->getUserId(),'user_id');
                    $store = Mage::getModel('core/store')->load($link->getStoreId());
                    $model = Mage::getModel('customer/customer');//->load($this->getRequest()->getParam('id'));
                    //$model->setWebsiteId($link->getStoreId());//->loadByEmail($data['email']);
                    $model->load($id);
                    //$model->setId('1');
                    $model->setData('website_id',$link->getStoreId());
                    $model->setStore($store);
                    $model->setData('firstname',$data['firstname']);
                    $model->setData('lastname',$data['lastname']);
                    $model->setData('group_id',$data['group_id']);
                    $model->setData('email',$data['email']);
                    if(isset($data['password'])){
                        $model->setPassword($data['password']);
                    }
                    if(isset($data['set_link'])){// && $data['set_link']=="yes"){
                        $link->setCustomerId($id);
                        
                    }
                    try {
//                            if ($model->getCreatedAt() == NULL || $model->getUpdatedAt() == NULL) {
//                                    $model->setCreatedAt(now())
//                                            ->setUpdatedAt(now());
//                            } else {
//                                    $model->setUpdatedAt(now());
//                            }
//                            echo "1";
//                            Mage::getModel('backend/backend')->load($user->getUserId(),'user_id')->delete();
                            $link->save();
                            $model->save();
//                            echo "2";
                            Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('backend')->__('Item was successfully saved'));
                            Mage::getSingleton('adminhtml/session')->setFormData(false);

                            if ($this->getRequest()->getParam('back')) {
                                    $this->_redirect('*/*/edit', array('id' => $model->getId()));
                                    return;
                            }
                            $this->_redirect('*/*/');
                            return;
        } catch (Exception $e) {
            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            Mage::getSingleton('adminhtml/session')->setFormData($data);
            $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
            return;
        }
    }
    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('backend')->__('Unable to find item to save'));
    $this->_redirect('*/*/');
    }

    public function deleteAction() {
            if( $this->getRequest()->getParam('id') > 0 ) {
                    try {
                            $model = Mage::getModel('backend/backend');

                            $model->setId($this->getRequest()->getParam('id'))
                                    ->delete();

                            Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
                            $this->_redirect('*/*/');
                    } catch (Exception $e) {
                            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
                            $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
                    }
            }
            $this->_redirect('*/*/');
    }

public function massDeleteAction() {
    $backendIds = $this->getRequest()->getParam('backend');
    if(!is_array($backendIds)) {
                    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
    } else {
        try {
            foreach ($backendIds as $backendId) {
                $backend = Mage::getModel('backend/backend')->load($backendId);
                $backend->delete();
            }
            Mage::getSingleton('adminhtml/session')->addSuccess(
                Mage::helper('adminhtml')->__(
                    'Total of %d record(s) were successfully deleted', count($backendIds)
                )
            );
        } catch (Exception $e) {
            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        }
    }
    $this->_redirect('*/*/index');
}

public function massStatusAction()
{
    $backendIds = $this->getRequest()->getParam('backend');
    if(!is_array($backendIds)) {
        Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
    } else {
        try {
            foreach ($backendIds as $backendId) {
                $backend = Mage::getSingleton('backend/backend')
                    ->load($backendId)
                    ->setStatus($this->getRequest()->getParam('status'))
                    ->setIsMassupdate(true)
                    ->save();
            }
            $this->_getSession()->addSuccess(
                $this->__('Total of %d record(s) were successfully updated', count($backendIds))
            );
        } catch (Exception $e) {
            $this->_getSession()->addError($e->getMessage());
        }
    }
    $this->_redirect('*/*/index');
}

public function exportCsvAction()
{
    $fileName   = 'backend.csv';
    $content    = $this->getLayout()->createBlock('backend/adminhtml_customers_grid')
        ->getCsv();

    $this->_sendUploadResponse($fileName, $content);
}

public function exportXmlAction()
{
    $fileName   = 'backend.xml';
    $content    = $this->getLayout()->createBlock('backend/adminhtml_customers_grid')
        ->getXml();

    $this->_sendUploadResponse($fileName, $content);
}

protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
{
    $response = $this->getResponse();
    $response->setHeader('HTTP/1.1 200 OK','');
    $response->setHeader('Pragma', 'public', true);
    $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
    $response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
    $response->setHeader('Last-Modified', date('r'));
    $response->setHeader('Accept-Ranges', 'bytes');
    $response->setHeader('Content-Length', strlen($content));
    $response->setHeader('Content-type', $contentType);
    $response->setBody($content);
    $response->sendResponse();
    die;
}
}